package com.iptv.grape.jss;

import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.view.WindowManager;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import com.iptv.grape.util.AppLog;

public class CallWebView extends WebView {
    private static final String CODING = "UTF-8"; // 编码格式

    public CallWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

    public CallWebView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init(context);
    }

    public CallWebView(Context context) {
        super(context);
        init(context);
    }


    private void init(Context context) {
        //垂直滚动条不显示
        this.setVerticalScrollBarEnabled(false);
        this.setHorizontalScrollBarEnabled(false);
        this.getSettings().setJavaScriptEnabled(true);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            this.setWebContentsDebuggingEnabled(true);
        }
        initSetting();
    }



    public void initSetting() {
        //  webView.requestFocus();//ccccc
//        IX5WebViewExtension x5WebViewExtension = webView.getX5WebViewExtension();
//        if (x5WebViewExtension != null) {
//            x5WebViewExtension.setScrollBarFadingEnabled(false);
//        }
        //如果访问的页面中有Javascript，则webview必须设置支持Javascript
        WebSettings settings = this.getSettings();
        //		settings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);
//		settings.setUseWideViewPort(true);
        settings.setUseWideViewPort(true);
        //设置运行加载js
        settings.setJavaScriptEnabled(true);
        // 允许js弹出窗口
        settings.setJavaScriptCanOpenWindowsAutomatically(true);
        //设置编码
        settings.setDefaultTextEncodingName(CODING);
        //设置支持DomStorage
        settings.setDomStorageEnabled(true);

        // 实现8倍缓存
        settings.setAppCacheMaxSize(Long.MAX_VALUE);
        settings.setAllowFileAccess(true);
        // 开启Application Cache功能
        settings.setAppCacheEnabled(true);
        //取得缓存路径
//        String appCachePath = context.getApplicationContext().getCacheDir().getAbsolutePath();
//        String chejusPath = getFilesDir().getAbsolutePath()+ APP_CACHE_DIRNAME;
        //设置路径
        //API 19 deprecated
//        settings.setDatabasePath(appCachePath);
        // 设置Application caches缓存目录
//        settings.setAppCachePath(appCachePath);
        //是否启用数据库
        settings.setDatabaseEnabled(true);
        //设置存储模式 建议缓存策略为，判断是否有网络，有的话，使用LOAD_DEFAULT,无网络时，使用LOAD_CACHE_ELSE_NETWORK
        settings.setCacheMode(WebSettings.LOAD_DEFAULT);
        //设置不支持字体缩放
        settings.setSupportZoom(false);//cc
        settings.setCacheMode(WebSettings.LOAD_NO_CACHE);//设置不缓存

        //还有一种是加载https的URL时在5.0以上加载不了，5.0以下可以加载，这种情况可能是网页中存在非https得资源，在5.0以上是默认关闭，需要设置，
//		loadWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
            settings.setAllowUniversalAccessFromFileURLs(true);
        }
    }


    /*
     * 启用硬件加速
     * **/
    public static void initHardwareAccelerate( Activity context) {
        try {
            if (Integer.parseInt(Build.VERSION.SDK) >= 11) {
                context.getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
                                WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED
                        );
            }
        } catch (Exception e) {
//            MLog.e("硬件加速异常");
        }
    }



    public static void initWebView(CallWebView webView,String loadUrl) {

        webView.setWebViewClient(new WebViewClient());
        // 设置和JS的回调
        webView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);
                if (newProgress == 100) {
                    //AppLog.getCurLog().out("WebChromeClient--Done");
                }
            }

        });
        try {
            webView.loadUrl(loadUrl);
            //webView.setBackgroundColor(0);
            AppLog.getCurLog().out("H5加载完成:" + loadUrl);
        } catch (Exception e) {
            e.printStackTrace();
            AppLog.getCurLog().out("H5加载失败:" + e.getMessage());
        }

    }
}
